package it.clariter.web.action;

import java.util.Date;
import java.util.List;

import it.clariter.dao.AreaDAO;
import it.clariter.dao.AziendaDAO;
import it.clariter.dao.ClienteDAO;
import it.clariter.dao.DocumentoDAO;
import it.clariter.dao.TipologiaDocumentoDAO;
import it.clariter.dao.VersoDAO;
import it.clariter.model.Documento;
import it.clariter.utils.DateUtils;
import it.clariter.web.form.DocumentoForm;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class CrudDocumentoAction extends DispatchAction {

	public ActionForward nuovo(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception{
		
		if(request.getSession().getAttribute("utente")==null){
			response.sendRedirect("login.jsp");
		}
		
		TipologiaDocumentoDAO tipDao = new TipologiaDocumentoDAO();
		AreaDAO aDao = new AreaDAO();
		VersoDAO vDao = new VersoDAO();
		AziendaDAO aziendaDao = new AziendaDAO();
		ClienteDAO cDao = new ClienteDAO();
		HttpSession session = request.getSession();
		session.setAttribute("tipologie", tipDao.getList());
		session.setAttribute("aree", aDao.getList());
		session.setAttribute("versi", vDao.getList());
		session.setAttribute("aziende", aziendaDao.getList());
		session.setAttribute("clienti", cDao.getListTotale());
		return mapping.findForward("insert");
		
	}
	
	public ActionForward modifica(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception{
		
		if(request.getSession().getAttribute("utente")==null){
			response.sendRedirect("login.jsp");
		}
		DocumentoForm l = (DocumentoForm) form;
		Date date = null;
		TipologiaDocumentoDAO tipDao = new TipologiaDocumentoDAO();
		AreaDAO aDao = new AreaDAO();
		VersoDAO vDao = new VersoDAO();
		AziendaDAO aziendaDao = new AziendaDAO();
		ClienteDAO cDao = new ClienteDAO();
		DocumentoDAO dDao = new DocumentoDAO();
		HttpSession session = request.getSession();
		Documento documento = dDao.get(l.getIdDocumento());
		if(documento.getDataDocumento()!=null) {
			date = new Date (documento.getDataDocumento().getTime());
			String nuovaData = DateUtils.parseString(date);
			request.setAttribute("nuovaData", nuovaData);
		}
		session.setAttribute("documento", documento);
		session.setAttribute("tipologie", tipDao.getList());
		session.setAttribute("aree", aDao.getList());
		session.setAttribute("versi", vDao.getList());
		session.setAttribute("aziende", aziendaDao.getList());
		session.setAttribute("clienti", cDao.getListTotale());
		return mapping.findForward("update");
		
		
	}
	
	public ActionForward cancella(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception{
		
		if(request.getSession().getAttribute("utente")==null){
			response.sendRedirect("login.jsp");
		}
		
		HttpSession session = request.getSession();
		DocumentoForm l = (DocumentoForm) form;
			
		Documento doc = new DocumentoDAO().get(l.getIdDocumento());
		doc.setAttivo(ActionConstants.STATO_NON_ATTIVO);
		new DocumentoDAO().update(doc);
		request.setAttribute("messaggio", "Invalidazione effettuata correttamente!");
		Documento a = (Documento) session.getAttribute("documentoPerRicerca");
		List<Documento> lista = new DocumentoDAO().findByExample(a);
		session.setAttribute("documenti", lista);
		
		request.setAttribute("messaggio", "Cancellazione effettuata correttamente");
		return mapping.findForward("delete");
		
	}
}
